مشخصات مقاله
-
883
-
0.0
-
2729
-
0
-
0
آموزش Xamarin-مبانی منابع Android- قسمت 1
آموزش Xamarin-مبانی منابع Android- قسمت 1
تقریبا تمام برنامه های کاربردی اندرویدی در آنها نوعی منابع وجوددارند؛حداقل آنها اغلب دارای layouts رابط کاربر در قالب فایل های XML هستند. هنگامی که یک برنامه Xamarin.Android برای اولین بار ایجاد می شود، منابع پیش فرض توسط قالب پروژه Xamarin.Android تنظیم می شوند:
پنج فایل که منابع پیش فرض را تشکیل می دهند در پوشه Resources ایجاد شده است:
- Icon.png : icon پیش فرض برای برنامه.
- Main.axml : فایل layout رابط کاربری پیش فرض برای یک برنامه. توجه داشته باشید در حالی که Android از فرمت فایل xml استفاده می کند ، Xamarin.Android از فرمت فایل axml استفاده می کند.
- Strings.xml : یک جدول string برای کمک به محلی سازی برنامه.
- AboutResources.txt : احتیاجی به این فایل نیست و می توانید با خیال راحت حذف کنید. این فقط یک نمای کلی از سطح پوشه Resources و فایل ها ارائه میدهد.
- Resource.designer.cs : این فایل به صورت خودکار توسط Xamarin.Android تولید و نگهداری می شود و دارای شناسه منحصر به فرد(unique ID's) برای هر منبع است. این بسیار شبیه به فایل R.java است که یک برنامه Android در جاوا نوشته شده است. این به طور خودکار توسط ابزار Xamarin.Android و ایجاد شده است و time to time بازسازی خواهد شد.
ایجاد کردن و دسترسی به منابع(Creating and Accessing Resources)
ایجاد منابع مانند اضافه کردن فایل به دایرکتوری به همان اندازه ساده است. تصویر زیر نشان می دهد " string resources" برای محل "آلمان" که به یک پروژه اضافه شده است. وقتی "Strings.xml" به فایل اضافه شد،" Build Action" به طور خودکار بر روی "AndroidResource" توسط ابزار Xamarin.Android تنظیم می شود:
این اجازه می دهد تا ابزار Xamarin.Android به درستی کامپایل و منابع را به فایل APK جاسازی کنید. اگر به دلایلی " Build Action" بر روی "Android Resource" تنظیم نشده است، سپس فایل ها از APK حذف خواهند شد و هر گونه تلاش برای بارگذاری و یا دسترسی به منابع باعث "خطای زمان اجرا"می شود و برنامه crash خواهد کرد.
همچنین، مهم است که توجه داشته باشید که در حالی که آندروید تنها "نام فایل های lowercase " برای آیتم های منابع را پشتیبانی می کند، Xamarin.Android کمی آسان تر می گیرد و از lowercase و uppercase پشتیبانی می کند.کنوانسیون برانی نام image به این صورت است که از حروف lowercase و underscores(جداکننده _) استفاده شود برای مثال(my_image_name.png).توجه داشته باشید که در نام منابع اگر به عنوان جداکننده از " dashes" یا " spaces" استفاده شود، نمی تواند پردازش شود.
هنگامی که منابع به یک پروژه اضافه شده است، دو راه برای استفاده از آنها در یک برنامه وجود دارد - برنامه نویسی (داخل کد) یا استفاده از فایل های XML.
ارجاع به منابع برنامه نویسی شده(Referencing Resources Programmatically)
برای دسترسی به این فایلها به روش برنامه نویسی، باید به آنها یک شناسه منبع منحصر به فرد را اختصاص دهیم. شناسه منبع آن یک عدد صحیح است که در یک کلاس خاص به نام Resource تعریف شده است که در فایل "Resource.designer.cs" یافت می شود.و چیزی شبیه به این به نظر می رسد:
public partial class Resource
{
public partial class Attribute
{
}
public partial class Drawable {
public const int Icon=0x7f020000;
}
public partial class Id
{
public const int Textview=0x7f050000;
}
public partial class Layout
{
public const int Main=0x7f030000;
}
public partial class String
{
public const int App_Name=0x7f040001;
public const int Hello=0x7f040000;
}
}
هر "شناسه منبع" در داخل یک کلاس تودرتو قرار دارد که مربوط به نوع منبع است. برای مثال، زمانی که فایل Icon.png به پروژه اضافه شد، Xamarin.Android کلاس "Resource" را به روز کرد ، ایجاد یک کلاس توزیع شده با نام "Drawable" با یک نام ثابت " Icon " در داخل. این اجازه می دهد تا فایل Icon.png به عنوان Resource.Drawable.Icon درج شود. کلاس "Resource" نباید به صورت دستی ویرایش شود، زیرا هر گونه تغییری که در آن ساخته بشود توسط Xamarin.Android جایگزین خواهد شد. هنگام ارجاع منابع به صورت برنامه نویسی (در کد)، آنها می توانند از طریق سلسله مراتب کلاس " Resource " قابل دسترسی باشند که از سینتکس زیر استفاده می کند:
@[< PackageName >.]Resource.< ResourceType >.< ResourceName >
- PackageName : بسته ای که منبع را فراهم می کند و فقط زمانی که منابع از بسته های دیگر استفاده می کنند مورد نیاز است.
- ResourceType : این نوع resource توزیع شده است که درون کلاس Resource در بالا شرح داده شده است.
- Resource Name : نام فایل منبع (بدون پسوند) یا value آندرویید: ویژگی نام برای منابع که در یک عنصر XML هستند.
ارجاع به منابع ازطریق XML
منابع در یک فایل XML به شکل زیر در دسترس هستند:
@[< PackageName >:]< ResourceType >/< ResourceName >.
- PackageName : بسته ای که منبع را فراهم می کند و فقط زمانی که منابع از بسته های دیگر استفاده می کنند مورد نیاز است.
- ResourceType : این نوع resource توزیع شده است که درون کلاس Resource در بالا شرح داده شده است.
- Resource Name : نام فایل منبع (بدون پسوند) یا value آندرویید: ویژگی نام برای منابع که در یک عنصر XML هستند.
به عنوان مثال محتویات یک فایل layout ، Main.axml، به شرح زیر است:
< ?xml version="1.0" encoding="utf-8"? >
< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
< ImageView android:id="@+id/myImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/flag" / >
< /LinearLayout >
این مثال دارای "ImageView" است که نیاز به منبع drawable با نام flagدارد. "ImageView" ویژگی "src" را به "drawable / flag@" تنظیم می کند. هنگامی که activity شروع می شود، آندروید در داخل پوشه "Resource / Drawable" برای یک فایل با نام "flag.png" می گردد. (پسوند فایل می تواند فرمت تصویر دیگری باشد، مانند flag.jpg) و فایل بارگذاری شده و در ImageView نمایش داده میشود. هنگامی که این برنامه اجرا می شود، چیزی شبیه تصویر زیر خواهد بود: